<!--
  Copyright JS Foundation and other contributors, http://js.foundation
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/html" data-help-name="mqtt in">
    <p>Verbindungsherstellung zu einem MQTT-Broker und Abonnement von Topic-Nachrichten.</p>
    <h3>Ausgangsdaten</h3>
    <dl class="message-properties">
        <dt>payload <span class="property-type">string | buffer</span></dt>
        <dd>Zeichenfolge, sofern sie nicht als binärer Puffer (buffer) erkannt wurde.</dd>
        <dt>topic <span class="property-type">string</span></dt>
        <dd>MQTT-Topic mit / (Schrägstrich) als Hierarchie-Trennzeichen.</dd>
        <dt>qos <span class="property-type">number</span></dt>
        <dd>QoS (Quality of Service)<br/>
            0: Einmal gesendet ohne Empfangsgarantie (fire und forget)<br/>
            1: Garantiert mindestens einmal empfangen (at least once)<br/>
            2: Garantiert exakt einmal empfangen (once and once only).</dd>
        <dt>retain <span class="property-type">boolean</span></dt>
        <dd>Bei <code>true</code> kann es eine aufbewahrte ältere Nachricht sein.</dd>

        <dt class="optional">responseTopic <span class="property-type">string</span></dt>
        <dd><b>MQTTv5</b>: MQTT-Antwort-Topic der Nachricht.</dd>
        <dt class="optional">correlationData <span class="property-type">buffer</span></dt>
        <dd><b>MQTTv5</b>: Korrelationsdaten der Nachricht.</dd>
        <dt class="optional">contentType <span class="property-type">string</span></dt>
        <dd><b>MQTTv5</b>: Inhaltstyp der Nutzdaten (Payload).</dd>
        <dt class="optional">userProperties <span class="property-type">object</span></dt>
        <dd><b>MQTTv5</b>: Alle Benutzer-Eigenschaften der Nachricht.</dd>
        <dt class="optional">messageExpiryInterval <span class="property-type">number</span></dt>
        <dd><b>MQTTv5</b>: Ablaufzeit der Nachricht in Sekunden.</dd>
    </dl>
    <h3>Details</h3>
    <p>Das abonnierte Topic darf  MQTT-Platzhalterzeichen (wildcards) enthalten (+ für eine Ebene und # für mehrere Ebenen).</p>
    <p>Dieser Node erfordert eine Verbindung zu einem MQTT-Broker, der über die Auswahlliste selektiert werden kann.
       Eine neue Verbindung wird durch Klicken auf das Stiftsymbol erstellt.</p>
    <p>Mehrere MQTT-Nodes (in oder out) können bei Bedarf dieselbe Broker-Verbindung nutzen.</p>
</script>

<script type="text/html" data-help-name="mqtt out">
    <p>Verbindungsherstellung zu einem MQTT-Broker und publizieren von Topic-Nachrichten.</p>
    <h3>Eingangsdaten</h3>
    <dl class="message-properties">
        <dt>payload <span class="property-type">string | buffer</span></dt>
        <dd>Zu publiziernde Nutzdaten.<br/>
            Wenn nicht gesetzt wird keine Nachricht gesendet.
            Um eine leere Nachricht zu senden, muss eine leere Zeichenfolge (string) übergeben werden.</dd>
        <dt class="optional">topic <span class="property-type">string</span></dt>
        <dd>MQTT-Topic mit / (Schrägstrich) als Hierarchie-Trennzeichen.</dd>
        <dt class="optional">qos <span class="property-type">number</span></dt>
        <dd>QoS (Quality of Service)<br/>
            0: Einmal gesendet ohne Empfangsgarantie (fire und forget)<br/>
            1: Garantiert mindestens einmal empfangen (at least once)<br/>
            2: Garantiert exakt einmal empfangen (once and once only).</dd>
        <dt class="optional">retain <span class="property-type">boolean</span></dt>
        <dd>Bei <code>true</code> wird die Nachricht beim Broker aufbewahrt.
            Standard (default) ist <code>false</code>.</dd>
        <dt class="optional">responseTopic <span class="property-type">string</span></dt>
        <dd><b>MQTTv5</b>: MQTT-Antwort-Topic für die Nachricht.</dd>
        <dt class="optional">correlationData <span class="property-type">buffer</span></dt>
        <dd><b>MQTTv5</b>: Korrelationsdaten für die Nachricht.</dd>
        <dt class="optional">contentType <span class="property-type">string</span></dt>
        <dd><b>MQTTv5</b>: Inhaltstyp der Nutzdaten (Payload).</dd>
        <dt class="optional">userProperties <span class="property-type">object</span></dt>
        <dd><b>MQTTv5</b>: Alle Benutzer-Eigenschaften der Nachricht.</dd>
        <dt class="optional">messageExpiryInterval <span class="property-type">number</span></dt>
        <dd><b>MQTTv5</b>: Ablaufzeit der Nachricht in Sekunden.</dd>
        <dt class="optional">topicAlias <span class="property-type">number</span></dt>
        <dd><b>MQTTv5</b>: Der zu benutzende MQTT-Topic-Alias.</dd>
    </dl>
    <h3>Details</h3>
    <p><code>msg.payload</code> wird als Nutzdaten (Payload) der zu publizierenden Nachricht verwendet.
       Wenn es ein Objekt enthält, wird es vorm Senden in eine JSON-Zeichenfolge (string) konvertiert.
       Wenn es einen binären Puffer (buffer) enthält, wird die Nachricht unverändert gesendet.</p>
    <p>Das Topic kann im Node eingestellt werden oder, falls leer gelassen,
       durch <code>msg.topic</code> vorgegeben werden.</p>
    <p>Ebenso können die QoS- und Retain-Werte im Node eingestellt werden oder, falls leer gelassen,
       durch <code>msg.qos</code> bzw. <code>msg.retain</code> vorgegeben werden.
       Um ein beim Broker vorgehaltenes Topic zu löschen,
       kann eine leere Nachricht mit dem Topic und Retain gleich <code>true</code> gesendet werden.</p>
    <p>Dieser Node erfordert eine Verbindung zu einem MQTT-Broker, der über die Auswahlliste selektiert werden kann.
       Eine neue Verbindung wird durch Klicken auf das Stiftsymbol erstellt.</p>
    <p>Mehrere MQTT-Nodes (in oder out) können bei Bedarf dieselbe Broker-Verbindung nutzen.</p>
</script>

<script type="text/html" data-help-name="mqtt-broker">
    <p>Konfiguration der Verbindung zu einem MQTT-Broker.</p>
    <p>Diese Konfiguration erstellt eine einzelne Verbindung zu einem Broker,
       welche anschließend von den mqtt&nbsp;in- und
       mqtt out-Nodes verwendet werden.</p>
    <p>Der Node generiert eine beliebige Client-ID, falls sie nicht vorgegeben ist und der
       Node eine bereinigte Sitzung (clean session) verwenden soll.
       Wenn eine Client-ID vorgegeben wird, muss sie für den Broker eindeutig sein, zu dem die Verbindung hergestellt werden soll.</p>
    <h3>Nachricht bei Verbindungsaufbau</h3>
    <p>Diese Nachricht wird vom Broker mit dem eingestellten Topic publiziert, wenn die Verbindung hergestellt wurde.</p>
    <h3>Nachricht vor Verbindungsabbau</h3>
    <p>Diese Nachricht wird vom Broker mit dem eingestellten Topic publiziert, bevor die Verbindung normal abgebaut wird,
       egal ob durch erneute Übernahme (deploy) des Nodes oder durch Herunterfahren von Node-RED.</p>
    <h3>Nachricht bei unerwarteten Verbindungsabbruch</h3>
    <p>Diese Nachricht wird vom Broker mit dem eingestellten Topic veröffentlicht,
       wenn die Verbindung unerwartet abgebrochen ist.</p>
    <h3>WebSockets</h3>
    <p>Der Node kann für die Verwendung einer WebSocket-Verbindung eingestellt werden.
       Dazu ist im Server-Feld die vollständige URI für die Verbindung vorzugeben. Beispiel:</p>
    <pre>ws://example.com:4000/mqtt</pre>
</script>
